// const s = new Set();
// [2,3,4,5,5,2,2].forEach(x => s.add(x));
// for (let v of s) {
//     console.log(v);
// }
// console.log(s)
// const a = [[1, 2], [3, 4]];
// const ws = new WeakSet(a);
// console.log(ws)

// const m = new Map();
// const o = {p: 'Hello World'};

// m.set(o, 'content')
// m.get(o) // "content"

// m.has(o) // true
// m.delete(o) // true
// m.has(o) // false
// console.log(m)

// const map = new Map([
//     ['name', '张三'],
//     ['title', 'Author']
//   ]);
  
//   map.size // 2
//   map.has('name') // true
//   map.get('name') // "张三"
//   map.has('title') // true
//   map.get('title') // "Author"
//   console.log(map)

// WeakMap 可以使用 set 方法添加成员
// const wm1 = new WeakMap();
// const key = {foo: 1};
// wm1.set(key, 2);
// wm1.get(key) // 2
// console.log(wm1)

// // WeakMap 也可以接受一个数组，
// // 作为构造函数的参数
// const k1 = [1, 2, 3];
// const k2 = [4, 5, 6];
// const wm2 = new WeakMap([[k1, 'foo'], [k2, 'bar']]);
// wm2.get(k2) // "bar"
// console.log(wm2)

const wm = new WeakMap();
let key = {};
let obj = {foo: 1};

wm.set(key, obj);
obj = null;
wm.get(key)
// Object {foo: 1}
console.log(wm, 'wm')

